Django定制外国人的主要方式

2024-05-17 13:57:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要创建一个自定义字段,它非常类似于ForeignKey字段,但有特定的逻辑。两项主要任务是:

  1. 这个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()一样执行。真正的目标是比较困难的,但感觉几乎是一样的

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

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

也许有人对自定义关系字段有更丰富的经验,所以我很乐意接受任何建议


Tags: 模型datemodelmodels逻辑lengthmaxclass