2016-08-05 42 views
0

目前有一個問題,我將兩個客戶端foreignkey分配給Signin,並且它不保存任何引用。繼承人的簽到模式Django ForeignKeys not saving

#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模型中兩個客戶端對象上的相關名稱,可能是因爲它將Charfields命名爲相同的東西。這沒有工作:( – khancock

回答

1

我找到了答案!

所以問題得到了遵循。我在mySQL中處理遺留數據庫時,問題是,當Django分配客戶端ID時,它認爲主鍵是一個整數字段,所以當它嘗試分配鍵(這是一個varchar)時,它會碰到一個整數字段,所以它不喜歡它,並沒有保存。希望能夠幫助任何後來遇到這個問題的人!