Django自定义ForeignKey实例返回方式

时间:2018-03-13 17:14:25

标签: python django django-models

我需要创建自定义字段,这与 ForeignKey 字段非常相似,但具有特定逻辑。两个主要任务是:

  1. 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()相同。真正的目标更难,但感觉几乎相同。

  2. 第二件事是关于查找。当我通过此 CustomForeignKey 过滤对象时,我希望具有与前一点相同的逻辑。因此,Author.objects.filter(publication__title = 'Some Title')应该按照references相关管理员按日期排序的第一个对象进行过滤。

  3. 我在django中阅读了有关creating custom fields的文档,但没有关于自定义关系字段的好例子。在django.db.models.fields.related中,我也没有找到我应该重新定义哪些方法来实现我的目标。有to_pythonfrom_db_value,但它们仅用于常规字段,而不是相关字段。

    也许有人对自定义关系字段有更多的体验,所以我会很满意任何建议!

0 个答案:

没有答案