当前位置: 首页 > 知识库问答 >
问题:

显示相关项目django

柳胜
2023-03-14

我有以下型号:

类类别(models.Model):名称=模型。字符域(最大长度=255)

类元素(models.Model):

category = models.ForeignKey(Category)
name = models.CharField(max_length=255)

课程主题(models.Model):

category = models.ForeignKey(Category)

元素=模型。ForeignKey(元素)name=模型。夏菲尔德(max_length=255)

我基本上需要在category id=1中添加新主题,并只获得属于类别1的élément列表

我在category id=1中创建了一个视图新主题,但对于表单中的fields元素,我得到了所有类别的所有元素

共有2个答案

闾丘书
2023-03-14

嗨,

下面的模型。派克

class Category(models.Model):
    name = models.CharField(max_length=50, unique=True)
    description = models.CharField(max_length=150)

class Element(models.Model):
    category = models.ForeignKey(Category, related_name='elements', on_delete=models.CASCADE)
    element = models.CharField(max_length=50)

class Topic(models.Model):
    subject = models.CharField(max_length=255)
    element = models.ForeignKey(KPI, related_name='topics', on_delete=models.CASCADE)
    category = models.ForeignKey(Category, related_name='tickets', on_delete=models.CASCADE)
    created_by = models.ForeignKey(User, related_name='tickets', on_delete=models.CASCADE)
    created_date = models.DateTimeField(auto_now_add=True)
   

views.py

def new_topic(request, category_id):
    category = get_object_or_404(Category, pk=category_id)
    kpi = KPI.objects.select_related().filter(category=category_id)
    #user = User.objects.first()
    if request.method == "POST":
        form = NewTopicForm(request.POST)

        if form.is_valid():
           topic = form.save(commit=False)
           topic.category = category
           topic.created_by = request.user
           topic.save()

       

           post = Post.objects.create(
                message=form.cleaned_data.get('message'),
                
                topic=topic
           )
           return redirect('category_topic', category_id=category.pk)
    else:

        form = NewTopicForm()

    return render(request, 'new_topic.html', {'category': category, 'form':form}
                  )

形式。派克

class NewTopicForm(forms.ModelForm):

    message = forms.CharField(widget=forms.Textarea, max_length=6000)

    class Meta:
        model = Topic
        fields = ['subject', 'issue_date', 'message', 'element']

一些元素是由管理界面创建的,例如

类别1要素类别1要素类别2要素类别3

问题是当我需要在类别1中创建新主题时,我需要只显示属于类别1的元素,而不是所有元素

非常感谢。

拓拔弘亮
2023-03-14

为此,您应该在元素模型的类别字段中添加一个相关的\u名称

前任

category = models.ForeignKey(Category, related_name='elements')

然后,当您有一个主题对象时,您可以通过执行obj来访问主题类别的元素。类别元素

如果你计划得到一个类别中的帖子列表,你会对从主题到类别的FK做同样的事情(显然是用不同的名字)。

 类似资料:
  • 问题内容: 我正在做一个视图(使用Django的通用视图DeleteView)从模型中删除实例,但它会级联并从其他模型中删除实例: 我想要做的是像管理界面一样显示将要删除的相关项目的列表,例如: 问题答案: 你可以使用 Django 使用的类来确定要在级联中删除的对象。实例化它,然后调用它传递要删除的对象。它需要一个列表或查询集,因此,如果只有一个对象,只需将其放在列表中: instances_w

  • Laradock Related Projects Docker Stacks: A GUI for managing Laradock. (by Subhadip Naskar) Laradock CLI: A CLI for managing Laradock. (by Lorin Lee) Laradock CLI: A CLI for managing Laradock. (by Harl

  • 当产品(和子产品)类别页面和商店页面中的条件标记(是产品类别)同时出现时,我无法应用下面的代码。 希望有人能帮忙。 我的目标:每个产品类别页面(包括家长) 参考代码片段和代码片段

  •  这个世界上的文字类冒险游戏,显示文字方式可以大致分为在对话框内显示和电子小说式全画面窗口(Visual-Novel Type)两种。只是文字显示位置的不同,并没有特别大的差异。以上两种显示方式 KAG 均支持。 两种文字显示方式  此外,也能做到竖行显示。 竖行显示  KAG 默认的设定使用的是横行显示和电子小说式。详细的说明请参考 Config.tjs 。本教程将以使用电子小说式为前提,继续说

  • 问题内容: 我将现有的项目源代码从SVN中检出到系统中的文件夹中。然后我打开了日食。导入项目->现有Maven项目。 它导入没有问题。但是,Project Explorer将其显示为仅文件夹而不是软件包。(就像我们创建一个包然后向其添加类时,它为包根显示一个不同的图标)。我也打开了Navigator和Package Explorer。但是他们也将它们显示为文件夹。 我试过了: 在项目的根源上。但这

  • 已迁移至 官方的 awesome mobx