这里我有代码,我想创建一个post或类别,当我已经创建并发送到数据库的标记时,我不想创建一个新的标记,标记下面的代码是重复的。
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')如何标记不重复?
发布于 2018-04-07 17:57:03
可以使用get_or_create方法避免创建重复项。此外,我认为您应该将ManyToMany字段移到Post模型中。
models.py
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
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')https://stackoverflow.com/questions/49710034
复制相似问题