我需要创建自定义字段,这与 ForeignKey 字段非常相似,但具有特定逻辑。两个主要任务是:
此 CustomForeignKey 的每个相关模型都有模型本身的常规 ForeignKey 字段,我的目的是根据某些参数返回其中一个实例(日期)例如)。也许用一些例子会更清楚:
class Author(models.Model):
name = models.CharField(max_length = 30)
surname = models.CharField(max_length = 60)
publication = CustomForeignKey(Publication)
class Publication(models.Model):
title = models.CharField(max_length = 50)
text = models.TextField()
date = models.DateTimeField()
source = models.ForeigKey('self', related_name='references')
我希望SomeAuthor.publication
的来电与SomePublication.references.order_by('date').first()
相同。真正的目标更难,但感觉几乎相同。
第二件事是关于查找。当我通过此 CustomForeignKey 过滤对象时,我希望具有与前一点相同的逻辑。因此,Author.objects.filter(publication__title = 'Some Title')
应该按照references
相关管理员按日期排序的第一个对象进行过滤。
我在django中阅读了有关creating custom fields的文档,但没有关于自定义关系字段的好例子。在django.db.models.fields.related
中,我也没有找到我应该重新定义哪些方法来实现我的目标。有to_python
和from_db_value
,但它们仅用于常规字段,而不是相关字段。
也许有人对自定义关系字段有更多的体验,所以我会很满意任何建议!