UNIQUE约束失败:rango_category.name

时间:2017-11-26 20:18:06

标签: python django

嗨我跟着django教程跟着探戈..我已经找到了解决方案,但没什么!

the error:
IntegrityError at /rango/add_category/
UNIQUE constraint failed: rango_category.name

我的模特:

from django.db import models

# Create your models here.

class Category(models.Model):

    name = models.CharField(max_length=128, unique=True)
    views = models.IntegerField(default=0)
    likes = models.IntegerField(default=0)


    def __unicode__(self):
        return self.name


class Page(models.Model):

    category = models.ForeignKey(Category) #ForeignKey denotes a relationship between page and category
    title = models.CharField(max_length=128)
    url = models.URLField()
    views = models.IntegerField(default=0)


    def __unicode__(self):
        return self.title 

我的add_category视图:

def add_category(request):
    # Get the context from the request.
    context = RequestContext(request)


    # A HTTP POST?
    if request.method == 'POST':
        form = CategoryForm(request.POST)


        #Have we been provided with a valid form?
        if form.is_valid():
            #save the new category to the database
            form.save(commit=True)


            # Now call the index() view.
            # The user will be shown the Homepage.
            return index(request)
        else:
            # The supplied form contained errors - just print them to the terminal
            print (form.errors)
    else:
        form = CategoryForm()


    # Bad form (or form details), no form supplied...
    # Render the form with error message(if any).
    return render_to_response('rango/add_category.html', {'form':form}, context)

我的表格:

from django import forms
from rango.models import Page, Category

class CategoryForm(forms.ModelForm):

    names = forms.CharField(max_length=128, help_text="please enter the category name.")
    views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
    likes = forms.IntegerField(widget=forms.HiddenInput(), initial=0)

        #an inline class to to provide additional information on the form
    class Meta:
            # provide an association between the Modelform and a model
        model = Category
        fields = ('views', 'likes')

class PageForm(forms.ModelForm):
    title = forms.CharField(max_length=128, help_text="Please enter the title of the page")
    url = forms.URLField(max_length=200, help_text="Please enter the url of the page")
    views = forms.IntegerField(widget=forms.HiddenInput(),initial=0)

    class Meta:
            # Provide an association between the ModelForm and a model
        model = Page

            #what fields do we want to include in our form
            # this way we dont need every field in the model present
            # Some fields may allow NULL values, so we may not want to include them...
            # Here we are hiding. 
        fields = ('title', 'url', 'views')

1 个答案:

答案 0 :(得分:0)

'名称'在CategoryForm的Meta'字段中缺少字段。由于Category :: name是唯一字段且无法使用默认值,因此任何保存尝试都将失败。

  

如果模型不允许缺少的字段为空,那么   不为缺少的字段提供默认值(不可能是唯一的),任何尝试保存()具有缺少字段的ModelForm都将失败。