2016-08-05 2 views
0

В настоящее время возникает проблема, когда я назначу обеим клиентским внешним ключам Signin и не сохраняя ни ссылки. Херес Модель для входа в аккаунтDjango ForeignKeys, не сохраняющий

#Sign-ins require just a user 
class Signin(models.Model): 
    employee = models.ForeignKey(Employee) 
    sign_in_time = models.DateTimeField(null=True) 
    sign_out_time = models.DateTimeField(null=True) 
    sign_in_number = models.CharField(max_length=15, default="00000000000") 
    sign_out_number = models.CharField(max_length=15, default="00000000000") 
    client_in_obj = models.ForeignKey(Clients, related_name="client_in", null=True) 
    client_out_obj = models.ForeignKey(Clients, related_name="client_out", null=True) 
    client_in = models.CharField(max_length=100, default="Unkown") 
    client_out = models.CharField(max_length=100, null=True) 
    # Start of Sign in Function 
    def save(self, *args, **kwargs): 
     self.client_out_obj.save() 
     self.client_in_obj.save() 
     super(Signin, self).save(*args, **kwargs) 

    def __str__(self): 
     return self.employee.first_name + " " + self.employee.last_name + " : " + str(self.sign_in_time)+ " to " + str(self.sign_out_time) 

Теперь поле работник экономии, но две client_in_obj и client_out_obj НЕ экономить. Я назначу их, а затем при обновлении страницы они не будут установлены.

Вот клиент Модель

class Clients(models.Model): 
    name = models.CharField(max_length=40, blank=True, null=True) 
    alt_name = models.CharField(max_length=25, blank=True, null=True) 
    address1 = models.CharField(max_length=35, blank=True, primary_key=True) 
    address2 = models.CharField(max_length=35, blank=True, null=True) 
    rate = models.FloatField(blank=True, null=True) 
    contact_email = models.CharField(max_length=40, blank=True, null=True) 
    contact_name = models.CharField(max_length=30, blank=True, null=True) 
    phone = models.CharField(max_length=40, blank=True, null=True) 
    billing_name = models.CharField(max_length=30, blank=True, null=True) 
    billing_email_field = models.CharField(db_column='billing_email_', max_length=12, blank=True, null=True) # Field renamed because it ended with '_'. 

    def __str__(self): 
     return self.name + ", " + self.address1 

    class Meta: 
     managed = False 
     db_table = 'clients' 

Они client_in и client_out поля были моим hackey способом пытается получить от него сейчас.

Мои отношения, которые я хотел бы сохранить, следующие: у сотрудника будет много знаковых входов, и каждому знаку требуется только сотрудник в начале, и каждое поле будет заполнено в течение дня.

+0

Просто попробовал сменить родственные имена на обоих объектах клиента в модели Signin Model, возможно, он смешивал его с Charfields, названным тем же самым. Это не сработало :( – khancock

ответ

1

Я нашел ответ!

Так что проблема последовала. Я имел дело с устаревшей базой данных в mySQL, проблема заключалась в том, что когда django назначал идентификатор клиента, он думал, что первичный ключ был целым полем, поэтому, когда он пытался назначить ключ (который был varchar), он столкнулся с целым полем , поэтому он не понравился и не спас. Надеюсь, это поможет любому, кто столкнется с этой проблемой позже!

Смежные вопросы