繁体   English   中英

在DJANGO模型中添加条件外键字段

[英]Add a conditional foreign key field in a DJANGO model

Models.py如下所示。 Release表有一个指向SystemRequirement表的外键system_requirements_id ,但我希望只有当 Release表中的system_requirements字段没有文本时 ,用户才应填写system_requirements_id 否则, system_requirements_id可以留空。 我该如何实现?

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)

我的建议是: -

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM