Django 一对一关系问题

Django 一对一关系问题,django,django-models,Django,Django Models,我正在实现一个独立的'like'类(不仅仅是作为问题类的一部分),以便以后能够创建通知类,包括新的like、follow和其他社交内容 class Question(models.Model): like = models.OneToOneField('Like',related_name='like_QUESTION',null=True, blank=True) class Like(models.Model): what_post_is_liked = models.On

我正在实现一个独立的
'like'
类(不仅仅是作为问题类的一部分),以便以后能够创建通知类,包括新的like、follow和其他社交内容

class Question(models.Model):
    like = models.OneToOneField('Like',related_name='like_QUESTION',null=True, blank=True)

class Like(models.Model):
    what_post_is_liked = models.OneToOneField('Question', related_name='what_post_is_liked_LIKE')
    who_liked = models.OneToOneField('UserProfile', related_name='who_liked_LIKE')
    whom = models.OneToOneField('UserProfile', related_name='whom_LIKE')
如何通过
Question
class的“Like”属性获取类Like的属性(“what\u post\u是什么样的”)?根据OneToOne关系的文档,我应该在
'Like'
之后编写Like类的属性,就像这样
e.Like。谁喜欢

questions = Question.objects.filter(whom=request.user.profile)
for e in questions:
            print(e.like)
虽然“Like”对象存在,“e.Like”返回None,这意味着“Like”不会自动继承新创建的“Like”对象

like = Like(whom=a,who_liked=b,what_post_is_liked=c)
like.save()

我已经进入了一个整体。有人能解释一下它是如何工作的吗?如何使自动复制/可继承并通过类似的'Question'类获取'Like'属性?

OneToOneField可能不是这里的用户所需要的。通过一对一的关系,每个
问题
最多可以有一个
类似的
,因此您要寻找的是
外键
,应该在您的同类模型中。所以我们有

class Question(models.Model):
    marks = models.IntegerField() # whatever question related field
    # there's not like here.

class Like(models.Model):
    what_post_is_liked = models.ForeignKey('Question', related_name='what_post_is_liked_LIKE')
    who_liked = models.OneToOneField('UserProfile', related_name='who_liked_LIKE')
    whom = models.OneToOneField('UserProfile', related_name='whom_LIKE')
那你就可以了

questions = Question.objects.filter(like__whom=request.user.profile)

如果你想让你喜欢的对象能够链接到许多不同类型的对象,而不仅仅是问题,你就必须使用a,它的功能更强大(也更复杂)

OneToOneField可能不适合这里的用户。通过一对一的关系,每个
问题
最多可以有一个
类似的
,因此您要寻找的是
外键
,应该在您的同类模型中。所以我们有

class Question(models.Model):
    marks = models.IntegerField() # whatever question related field
    # there's not like here.

class Like(models.Model):
    what_post_is_liked = models.ForeignKey('Question', related_name='what_post_is_liked_LIKE')
    who_liked = models.OneToOneField('UserProfile', related_name='who_liked_LIKE')
    whom = models.OneToOneField('UserProfile', related_name='whom_LIKE')
那你就可以了

questions = Question.objects.filter(like__whom=request.user.profile)

如果你想让你喜欢的对象能够链接到许多不同类型的对象,而不仅仅是问题,你就必须使用a,它的功能更强大(也更复杂)

@e4c5它是edited@e4c5我是editedok我有外键,如何处理从Question object中检索相关的类似对象信息?这是一个不同的问题,但答案是Question.Like_set.all()好的,我得到了外键,如何处理从Question object中检索相关的类似对象信息?这是一个不同的问题,但答案是Question.Like_set.all()