【发布时间】:2011-04-10 16:27:44
【问题描述】:
我想在 django 中实现多列主键。
我尝试实现一个 AutoSlugField() 来连接我的列值(外键/日期)...
models.py:
class ProductProduction(models.Model):
enterprise = models.ForeignKey('Enterprise')
product = models.ForeignKey('Product')
date = models.DateTimeField()
count = models.IntegerField()
slug = AutoSlugField(populate_from=
lambda instance: instance.enterprise.username + '-' + instance.product.name + '-' + str(date))
当我传递以下参数时:
- 'Megacorp','robot','09/10/2010',5 => slug = 'Megacorp-robot-09/10/2010'
... the next time in pass the triplet, a new value has been inserted :
- 'Megacorp','robot','09/10/2010',10 => slug = 'Megacorp-robot-09/10/2010'
=> same slug value => insert ????
我尝试将 primary_key=True 参数添加到 slug...但它使用“-1”“-2”创建新实例...并且根本没有进行更新...
我错过了什么吗?
谢谢,
杨
【问题讨论】:
-
什么是
AutoSlugField? -
@Daniel:我认为是自定义的,例如 code.google.com/p/django-command-extensions/… 或 djangosnippets.org/snippets/490
-
一种从另一个字段(例如标题)自动填充 slug 字段的方法。我相信 James Bennett 在他的书(Practical Django Projects)中提到了这一点,也可以在这里找到:djangosnippets.org/snippets/490
-
这些自定义
AutoSlugField字段都不接受 lambda 作为参数。在 Yoan 向我们展示该领域的代码之前,我们无能为力。
标签: python django django-models foreign-keys composite-primary-key