如何在Django中使用ForeignKey链接两个模型,每个模型都有自己的模板

时间:2018-11-14 14:05:24

标签: django python-3.x django-models django-rest-framework django-serializer

我想使用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的数据库表在地图字段上始终显示为null。 我已经提供了足够的信息。谢谢

0 个答案:

没有答案