我正在构建一个项目,其中有两个SQL表:wikispy_edit
和wikispy_rdns
。 wikispy_edit
包含 - 除其他外 - 带有索引的ip
列,与ip
中的wikispy.rdns
列的数据类型相同,这是主键。问题是我无法将这两个与django.db.models.ForeignKey
连接起来,因为wikispy_edit
ip
值中的某些值在wikispy_rdns
中没有相应的值。虽然Django似乎在./manage.py migrate
期间没有抱怨,但是它不允许我使用它的ORM插入这样的对象,这很烦人。
有没有办法模仿这种关系并仍能达到Edit.objects.select_related().filter(rdns__rdns__somequery="blah")
的效果?我需要一个类似的语法,因为这是我发现的唯一允许我在单个SQL语句中执行此查询的方法,这有时会拉动数千个对象。如果可能的话,我宁愿避免原始的SQL查询。
这是我到目前为止使用的内容:
class Edit(models.Model):
wikipedia_id = models.IntegerField()
title = models.CharField(max_length=1024)
wiki = models.ForeignKey('Wiki')
rdns = models.ForeignKey('RDNS', db_column='ip')
class RDNS(models.Model):
ip = models.GenericIPAddressField(primary_key=True)
rdns = models.CharField(max_length=253)
这很好用,但问题是这样我就无法插入Edit
中未提及IP的新wikispy_rdns
。我怎么能解决版本或查询问题?
答案 0 :(得分:1)
尝试将blank=True, null=True
添加到Edit.rdns