2017-01-17 14 views
0

検索の結果、問題がForeignKeyに関連していることがわかりました。 IDを返すことを期待していますが、テール番号を使用します。私は多くの方法を試しましたが、どのように動作するのかわかりません。基数10のint()のリテラルが無効です: 'N21706' - Django

私は別のアプリのモデルにForeignKeyをやっています。 2つのアプリはdispatch(app2)とadd_acft(app1)と呼ばれます。私が間違いを抱えているという見解は、発送アプリケーションにあります。私が理解するのを助けるためにあなたができることがあれば、事前に感謝します。

add_cftのmodels.py

from django.db import models 
import datetime 

class AddAcft(models.Model): 

    YEAR_CHOICES = [] 
    for r in range(1940,(datetime.datetime.now().year+1)): 
     YEAR_CHOICES.append((r,r)) 

    make = models.CharField(max_length=10,blank=False,null=False) 
    make_model = models.CharField(max_length=10,blank=False,null=False) 
    tail = models.CharField(max_length=7,blank=False,null=False) 
    year = models.IntegerField(('year'),choices=YEAR_CHOICES,  default=datetime.datetime.now().year) 
    serial_number = models.IntegerField(blank=False,null=False) 
    updated = models.DateTimeField(auto_now_add=False,auto_now=True) 

    def __str__(self): 
     return self.tail 

ディスパッチmodels.py

from django.db import models 
import datetime 
from django.core.urlresolvers import reverse 
from add_acft import models as aircraft_models 


shced_type_choices = (('rental','rental'), ('instruction','instruction')) 


class Reservation(models.Model): 
    res_number = models.AutoField(primary_key=True) 
    date = models.DateField(default=datetime.date.today()) 
    status = models.CharField(max_length=10,default="Created") 
    reservation_type = models.CharField(max_length=11,choices=shced_type_choices, default="rental") 
    tail = models.ForeignKey(aircraft_models.AddAcft) 
    renter = models.CharField(max_length=30,blank=False,null=False) 
    created = models.DateTimeField(auto_now_add=True,auto_now=False) 
    updated = models.DateTimeField(auto_now_add=False,auto_now=True) 

    def __str__(self): 
     return self.renter 

    def get_absolute_url(self): 
     return reverse("reservations:detail", kwargs={"res_number": self.res_number}) 

ディスパッチviews.py

from django.contrib import messages 
from django import forms 
from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render, get_object_or_404 
from add_acft.models import AddAcft 


from .forms import ReservationForm, CloseReservationForm 
from .models import Reservation 

def reservations_list(request): 
    queryset = Reservation.objects.all() 
    context = { 
     "object_list": queryset, 
     "title": "List" 

    } 
    return render(request, "dispatch/list.html", context) 

def reservations_detail(request, res_number=None): 
    instance = get_object_or_404(Reservation, res_number=res_number) 
    context = { 
     "title": instance.renter, 
     "instance": instance, 

    } 
    return render(request, "dispatch/details.html", context) 


def reservations_create(request): 
    ReservationForm.base_fields['tail'] = forms.ModelChoiceField(queryset=AddAcft.objects.all()) 
    form = ReservationForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
     messages.success(request, "Reservation Created") 
     return HttpResponseRedirect(instance.get_absolute_url()) 

    context = { 
    "form": form, 
    } 
    return render(request, "dispatch/create.html", context) 
+1

は、完全なスタックトレースを投稿してください – e4c5

+0

私はあなたがReservationForm 'にその割り当てをやっているのかを理解していません。 base_fields' - 一般的にあなたはその属性を決して変更するべきではありませんが、完全なエラーとトレースバックを見ることはできません。 –

+0

こんにちはダニエル。私はちょうど尾の数字をリストし、ユーザーがそれを入力するのではなく、既に保存されているものでModelChoiceFieldを作成するためにそのものを使用しています。私が例えば:tail = models.CharField(max_length = 10)(ディスパッチモデルの内部)を使って実行すると、すべてが動作します。私の問題は、add_acfモデルでそれを外部キーで置き換えてテールを作成しようとすることです。私は今外出しています、私は今日後でエラーをコピーします。 – aitor11

答えて

0

ゾルutionはただ次のことを変更することでした:

再生回数:はbase_fieldsの一部を削除しました:

def reservations_create(request): 
    form = ReservationForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
     messages.success(request, "Reservation Created") 
     return HttpResponseRedirect(instance.get_absolute_url()) 
    context = { 
    "form": form, 
    } 
    return render(request, "dispatch/create.html", context) 
関連する問題