首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django标签系统

Django标签系统
EN

Stack Overflow用户
提问于 2018-04-07 17:26:29
回答 1查看 827关注 0票数 1

这里我有代码,我想创建一个post或类别,当我已经创建并发送到数据库的标记时,我不想创建一个新的标记,标记下面的代码是重复的。

代码语言:javascript
复制
class Post(models.Model):
    post = models.CharField(max_length=50)

class Tag(models.Model):
    tag = models.CharField(max_length=50)
    tags = models.ManyToManyField(Post, through="Tagging")

class Tagging(models.Model):
    posts = models.ForeignKey(Post, on_delete=models.CASCADE)
    taggings = models.ForeignKey(Tag, on_delete=models.CASCADE)

def index(request):
    if request.method == "POST":
        post = request.POST['post']
        tag = request.POST['tag']
        posts = Post.objects.create(post=post)
        tags = Tag.objects.create(tag=tag)
        tp = Tagging(posts=posts, taggings=tags)
        tp.save()
        return redirect('index')
    return render(request, 'index.html')

如何标记不重复?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-07 17:57:03

可以使用get_or_create方法避免创建重复项。此外,我认为您应该将ManyToMany字段移到Post模型中。

models.py

代码语言:javascript
复制
from django.db import models


class Tag(models.Model):
    tag = models.CharField(max_length=50)

class Post(models.Model):
    post = models.CharField(max_length=50)
    tags = models.ManyToManyField('Tag', through="Tagging")

class Tagging(models.Model):
    posts = models.ForeignKey('Post', on_delete=models.CASCADE)
    taggings = models.ForeignKey('Tag', on_delete=models.CASCADE)

views.py

代码语言:javascript
复制
from django.shortcuts import render, redirect
from .models import Post, Tag, Tagging


def index(request):
    if request.method == "POST":
        post = request.POST['post']
        tag = request.POST['tag']
        posts = Post.objects.create(post=post)
        tags, created = Tag.objects.get_or_create(tag=tag)
        tp = Tagging(posts=posts, taggings=tags)
        tp.save()
        return redirect('index')
    return render(request, 'index.html')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49710034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档