django - 如何创建具有循环和 null=False 关系的模型实例?
问题描述
我有具有循环关系的模型,我希望它们也有 null=False。下面的例子。这一切都很好,但是在这种情况下我该如何创建对象呢?
class Data(models.Model):
master = models.ForeignKey('Master', related_name='data', null=False)
class Master(model.Model):
last = models.OneToOneField('Data', null=False, related_name='+')
解决方案
您不需要使用“循环”关系。您使用reverse ForeignKey
关系来达到您的模型。您还必须更改模型:
class Data(models.Model):
master = models.ForeignKey('Master', related_name='datas', null=False)
anotherfield = <some_field>
class Master(model.Model):
last = models.CharField(max_length=50, blank=False, null=False)
filtering_masters = Master.objects.filter(datas__anotherfield = "some_value").select_related('data')
如果您需要从中获取最后一行,Data
可以使用:
last = Master.objects.select_related('data').filter(last = "some_master_name").order_by('-datas__id')[0]
注意:这里有__
(双下划线) - datas__id
。
推荐阅读
- reactjs - 非被动事件侦听器导致“阻塞”代码(使用 React Ace)并因此导致性能问题
- regex - 前瞻与后瞻的由来
- c - 这个 c 程序给出了分段错误
- python - 使用 sympy.solvers 导出值时出现内存错误
- c++ - 如何制作递归函数c ++?
- c# - 在asp.net中将网页转换为ms word
- python - 是否有 Python 方法来计算空间复杂度?
- python - 我应该怎么做才能使用 boto3 修复“您提供的 AWS 访问密钥 ID 在我们的记录中不存在”
- wordpress - Visual Composer 上的站点迁移
- javascript - 从桌面上的 Web 应用程序调用 upi 应用程序