Django:创建灯具而不指定主键?

时间:2009-09-30 18:34:17

标签: django fixtures

让我误解Django灯具的一个原因是你必须指定每个型号的主键。有没有办法在不必为每一行指定主键的情况下创建灯具?

5 个答案:

答案 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都能保证有效。 那是我能实现的唯一解决方案......((