ユーザーが車両のプレートを選択するフィールドがあり、この選択に従って、フォームに vehicle-table(query: ) からデータを入力したいと考えていますvehicle = Vehicles.objects.get(plate=plate)
。私はこのビューでこれを管理します:
def vehicles_archive(request):
user = request.user
user_id = user.id
u_id = user_id
vehicles = Vehicles.objects.filter(own_id1 = u_id)
if request.method == 'POST':
plate = request.POST.get('searchPlate')
vehicle = Vehicles.objects.get(plate=plate)
form = VehiclesForm(data=request.POST, instance=vehicle, own_id=u_id)
if form.is_valid():
form.save()
return render_to_response('success.html', locals(), context_instance= RequestContext(request))
else:
vehicles = Vehicles.objects.filter(own_id1 = u_id)
vehicle = Vehicles.objects.get(plate=plate)
form = VehiclesForm(instance=vehicle, own_id=u_id)
return render_to_response('vehiclesArchive.html', locals(), context_instance= RequestContext(request))
すべて正常に動作しているように見えますが、フォーム フィールドを編集してフォームを送信しようとすると、「Vehicles matching query does not exist.」というメッセージが表示されます。クエリをプレートで示します。使用しているロジックにエラーがあるはずですが、どうすれば解決できますか?または、上記の機能を実現するための望ましい方法はありますか?
編集:
class Vehicles(models.Model):
id = models.DecimalField(primary_key=True, unique=True, max_digits=127, decimal_places=0)
plate = models.CharField(max_length=80, unique=True)
tempflag = models.BooleanField()
vht_id = models.ForeignKey('Vehtypes', null=True, db_column='vht_id', blank=True)
vlength = models.DecimalField(null=True, max_digits=127, decimal_places=0, blank=True)
vwidth = models.DecimalField(null=True, max_digits=127, decimal_places=0, blank=True)
vheight = models.DecimalField(null=True, max_digits=127, decimal_places=0, blank=True)
vnetweight = models.DecimalField(null=True, max_digits=127, decimal_places=0, blank=True)
vmaxload = models.DecimalField(null=True, max_digits=127, decimal_places=0, blank=True)
axleno = models.DecimalField(null=True, max_digits=127, decimal_places=0, blank=True)
chassis = models.CharField(max_length=160, blank=True)
man_id = models.ForeignKey('Manufacturers', null=True, blank=True, db_column='man_id')
own_id1 = models.ForeignKey('Owners', null=True, db_column='own_id1', related_name='veh_own_id1', blank=True)
own_id2 = models.ForeignKey('Owners', null=True, db_column='own_id2',related_name='veh_own_id2', blank=True)
ins_id = models.ForeignKey('Insurancecompanies', null=True, blank=True, db_column='ins_id')
modelno = models.CharField(max_length=160, blank=True)
checkflag = models.BooleanField()
def __unicode__(self):
return self.plate
class Meta:
db_table = u'vehicles'
ordering = ['plate']
一方、searchPlate は、ユーザーの選択を取得するためだけにレンダリングされるランダム フィールドです。所有者モデルの定義は重要ではないと思います。