2017-02-18 113 views
1

Models.py如下所示。釋放臺有一個外鍵system_requirements_id指向SystemRequirement表,但我想,用戶應填寫system_requirements_id只有當在system_requirements場在釋放臺沒有文字。否則,system_requirements_id可以留空。我如何實現?在DJANGO模型中添加一個有條件的外鍵字段

class SystemRequirement(TimeStampedModel): 
    code_name = models.TextField(blank=True) 
    content = models.TextField() 
    creation_date = models.DateField(auto_now=False, auto_now_add=True) 

    def __unicode__(self): 
     return self.code_name 

class Release(TimeStampedModel): 
    system_requirements = models.TextField(blank=True) 
    system_requirements_id = models.ForeignKey(SystemRequirement, 
    blank=True, null=True) 
+0

什麼樣的行爲/錯誤被認爲是與上面的代碼? –

+0

沒有錯誤。我想實現這個功能,我不知道如何在django中完成。 –

+0

您應該將此添加到您的表單/模型上的清理方法。 – Lucas03

回答

0

我的建議是: -

Models.py -

class Release(TimeStampedModel): 
    system_requirements_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    system_requirements = models.TextField(blank=True) 



class SystemRequirement(TimeStampedModel): 
    system_requirements_id = models.ForeignKey(Release) 
    code_name = models.TextField(blank=True) 
    content = models.TextField() 
    creation_date = models.DateField(auto_now=False, auto_now_add=True) 

    def __unicode__(self): 
     return self.code_name 

views.py-(查詢)

#check system_requirements text in Release table 
try: 
    SystemRequirement =  Release.objects.get(system_requirements='MatchingText') 

    #If got matching result means text exist so don't do anything 

except ObjectDoesNotExist: #No matching query 
    Release.objects.filter(system_requirements='MatchingText').update(system_requirements_id='SomeId') 
+0

你爲什麼使用UUID字段。它是否有特殊用途? –

+0

UUID函數創建128位唯一ID(主要用於PK)。 –

+0

我們不能使用AutoField而不是UUID字段嗎? –

相關問題