让我误解Django灯具的一个原因是你必须指定每个型号的主键。有没有办法在不必为每一行指定主键的情况下创建灯具?
答案 0 :(得分:80)
使用“pk:null”而不是“pk:1”(或其他),这将导致PK被设置为None,并且当保存对象时,将分配主键。
这至少适用于YAML,如果您是手工创作,我猜你正在使用它。
答案 1 :(得分:13)
如果你愿意在不使用pks的情况下添加关系
,你应该看看自然键https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model
答案 2 :(得分:1)
如果查看manage.py dumpdata命令,您将看到一些名为--natural-foreign, - native-primary的选项。如果查看输出,可以看到在不使用主键或外键的情况下转储对象。
答案 3 :(得分:0)
我的一位朋友建议使用fixture
模块:http://farmdev.com/projects/fixture/
答案 4 :(得分:0)
我不得不处理现有的数据库模式而无法更改它,所以我需要一个包含复杂主键的表或根本没有它 - 但不需要使用串行表。我做了什么:
我已经为字段指定了primary_key = True,它根本不应该是唯一的 写了重载方法:
class ContraIndicationsMedicines(models.Model):
contra_indication = models.ForeignKey(ContraIndication, primary_key=True)
medicine = models.ForeignKey(Medicine)
def validate_unique(self, exclude=None):
pass
事实上,它可以满足我的需求,但是django.contib.admin中有更多的验证调用。* 而且并非所有内联e.t.c都能保证有效。 那是我能实现的唯一解决方案......((