Django:没有指定主键创build灯具?

我对Django装置的一些误解是你必须指定每个模型的主键。 有什么办法可以创build灯具而不必为每一行指定一个主键?

使用“pk:null”而不是“pk:1”(或其他),这将导致PK被设置为None,并且当对象被保存时,主键将被分配。

这至less适用于YAML,我猜你正在使用,如果你是手工创build。

你应该看看Natural Keys,如果你想添加关系而不使用pk的话

https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model

我的一个朋友build议fixture模块: http : //farmdev.com/projects/fixture/

我不得不处理现有的数据库模式而不可能改变它,所以我需要一个复杂的主键或没有它的表 – 而不是与串行的。 我做了什么:

我已经指定了一个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。*里有更多的validation,而且并不是所有的内联都能保证工作。 这是我可以实现的唯一解决scheme…((

如果您查看manage.py dumpdata命令,您将看到一些选项–natural-foreign,–natural-primary。 如果你看看输出,你可以看到对象被转储而不使用主键或外键。