2017-09-18 19 views
0

まずDjangoアプリケーションのソロを構築します。NOT NULL制約が失敗しました:campgrounds_campground.author_id

class User(auth.models.User): 

    def __str__(self): 
     return self.username 

すべてが正常に動作しますが、次のように私はユーザモデルを設定しました。 I [編集]

は、コードの表示は、フォームがCREATEVIEWから来ている

class CreateCampground(LoginRequiredMixin,generic.CreateView): 
    fields = ('name', 'image', 'description') 
    model = Campground 

class Campground(models.Model): 
    author = models.ForeignKey('auth.User' , related_name='submitted_campgrounds') 
    name = models.CharField(max_length=128, blank=False, unique=True) 
    image = models.URLField(blank=False) 
    description = models.TextField() 

    def __str__(self): 
     return self.name 

    def get_absolute_url(self): 
     return reverse('campgrounds:single', kwargs={'pk':self.pk}) 
キャンプ場のモデルを作成しました。

フォームを送信して新しいキャンプ場を作成するときにエラーが表示されます。

ログインしたユーザーからユーザーIDを取得していませんか?私はビューを作成するビューのLoginRequiredMixinを持っています。

+0

あなたは 'Campground'を追加しているビューのコードを追加してください私のCreateCampgroundビューにこれを追加することで解決しました。 – FamousJameous

+0

あなたのフォームとデータを表示 –

+0

エラー –

答えて

0

コードの縫い目は問題ありません。新しいモデルCampgroundを作成したばかりのCampgroundというオブジェクトを持たない既存のユーザーに問題がある可能性があります。私はDjangoの管理者にログを記録してこの問題を解決し、Campgroundを持っていないユーザーのためにCampgroundを手動で作成することを忘れないでください。または、そのユーザーを削除して再試行することもできます。

このヘルプが必要です。

乾杯 ヘンリー

0

def form_valid(self, form): 
    form.instance.author = self.request.user 
    return super(CreateCampground, self).form_valid(form) 
関連する問題