首页 > 解决方案 > 如何在Django中使用foreignKey链接两个模型,每个模型都有自己的模板

问题描述

我想使用foreignKey链接两个模型,问题是当我尝试这样做时,一个模型没有获得数据库表中下一个模型的foreignKey值。目的是让用户在第一页上填写信息(有自己的模型和模板)然后单击下一步(在具有自己的模型和模板的下一页中填写更多信息)然后单击下一步以获得相同的逻辑。那么当其他用户查看这篇文章时,它必须在一页中显示来自不同模型的所有内容。这是我的代码。

第一个模型

class Map(models.Model):
 user = models.ForeignKey(User, default=None, blank=True, null=True, on_delete=models.CASCADE)
 name = models.CharField(max_length=100)
 position = GeopositionField()

拥有自己的模板

第二个模型

class Post(models.Model):
 parent = models.ForeignKey("self", default=None, blank=True, null=True, on_delete=models.CASCADE)
 user = models.ForeignKey(settings.AUTH_USER_MODEL, default=None, on_delete=models.CASCADE)
 title = models.CharField(max_length=50)
 content = models.TextField()

 map = models.ForeignKey(Map, related_name='mapkey', default=None,  blank=True, null=True, on_delete=models.CASCADE)

拥有自己的模板但也有以下序列化方法(API):

class PostModelSerializer(serializers.ModelSerializer):
 user = UserDisplaySerializer(read_only=True)
 parent = ParentPostModelSerializer()

 map = serializers.SerializerMethodField()

 class Meta:
    start_date = forms.DateField(widget = forms.SelectDateWidget())
    end_date = forms.DateField(widget = forms.SelectDateWidget())
    model = Post
    fields = [
        'id',
        'user',
        'title',
        'content'
        'image',

        'map',

    ]

请仅关注地图字段,因为它在上述代码中被隔离,一切正常,但foreignKey。我也没有看到需要在这里包含所有代码,但片段。

我已经为此苦苦挣扎了好几天了。我还需要为第一个模型编写一个 api 吗?对于视图,我使用基于类的视图。

模型 2 的数据库表,在 map 字段上它一直显示为 null。我已经提供了足够的信息。谢谢

标签: djangopython-3.xdjango-modelsdjango-rest-frameworkdjango-serializer

解决方案


推荐阅读