我需要创建一个自定义字段,它非常类似于ForeignKey字段,但有特定的逻辑。两项主要任务是:
这个CustomForeignKey的每个相关模型都有规则的ForeignKey字段到模型本身,我的目的是根据一些参数(例如date)返回其中一个实例。举个例子也许会更清楚:
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
,但它们只用于常规字段,不用于相关字段
也许有人对自定义关系字段有更丰富的经验,所以我很乐意接受任何建议
目前没有回答
相关问题 更多 >
编程相关推荐