Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django从ManyToManyField反向查找OneToOneField_Python_Database_Django - Fatal编程技术网

Python Django从ManyToManyField反向查找OneToOneField

Python Django从ManyToManyField反向查找OneToOneField,python,database,django,Python,Database,Django,我试图通过Django中相当复杂的查找来访问特定字段。我想搜索一个ManyToManyField标记,它链接到一个Poem模型,而这个模型又被一个带有OneToOneField的UserPoem模型链接到。我就是不知道怎么做: class Poem(models.Model): title = models.CharField(max_length=256) thetext = models.TextField() class UserPoem(models.Model):

我试图通过Django中相当复杂的查找来访问特定字段。我想搜索一个ManyToManyField标记,它链接到一个Poem模型,而这个模型又被一个带有OneToOneField的UserPoem模型链接到。我就是不知道怎么做:

class Poem(models.Model):
    title = models.CharField(max_length=256)
    thetext = models.TextField()

class UserPoem(models.Model):
    poem = models.OneToOneField(Poem, related_name='u_poem')
    date = models.DateField()
    user = models.ForeignKey(User)

class Tag(models.Model):
    name = models.CharField(max_length=64, unique=True)
    poems = models.ManyToManyField(Poem)`
因此,给定一个标签,我想获取该标签中诗歌标题文本的信息,以及用户、诗歌日期等信息。我尝试了各种方法,包括选择相关的,但就是无法破解它。以下是(不工作)标签请求:

def tag_page(request, tag_name):
    tag = get_object_or_404(Tag, name=tag_name)
    poems = tag.poems.order_by('-id').select_related('u_poem')
我只是对Django的人际关系的运作方式感到困惑。自从我决定将Poems表格模型一分为二以来,我每天都会遇到数不清的问题


这不会返回错误;它似乎没有从UserPoem/u_poem表返回任何信息。

在您的位置,我会:

class Tag(models.Model):
    name = models.CharField(max_length=64, unique=True)

class Poem(models.Model):
    title = models.CharField(max_length=256)
    thetext = models.TextField()
    tags   = models.ManyToManyField(Poem)
因此:

模板:

{% for poem,usersp in poems_sets %}
    {{poem.title}}
    {{poem.thetext}}
    {% for u in usersp %}
        {{u.date}}
        {{u.user}}
    {% endfor %}
{% endfor %}               

你好我知道你来自哪里,但这并不能真正解决我的问题。它不仅打乱了我的应用程序的其他部分(当我使用_set时),而且我仍然看不到如何使用该更改访问userpoems表。在其他地方,我使用了
poem.tag_set
和类似的查询。另外,for循环是实现这一点的唯一方法吗?我想我是在想更“优雅的解决方案”,也许这就是为什么我在这个问题上如此挣扎的原因。非常感谢。嗨,astro-我已经将你的代码添加到我的应用程序中,网页上什么也没有显示。U集数组为空。是否确实存在此类数据?poems和usersp不是空的吗?你没有一个对象userpeom你有几个变量,所以:
{%forpoem,date,user_id,id inpoems_set%}{{{poem.title}{{{poem.thetext}{{date}{{user_id}{%endfor%}{%endfor%}{%endfor%}
{% for poem,usersp in poems_sets %}
    {{poem.title}}
    {{poem.thetext}}
    {% for u in usersp %}
        {{u.date}}
        {{u.user}}
    {% endfor %}
{% endfor %}