Djano를 사용하여 데이터베이스 데이터를 표시하고 관리하는 간단한 웹 응용 프로그램을 개발하고 있습니다. 나는 MySQL 데이터베이스를 연결하고 inspectdb를 사용하여 자동으로 데이터베이스 테이블을 기반으로 모델을 생성했다.Django MultipleObjects 기존 데이터베이스를 사용하는 동안 반환
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey has `on_delete` set to the desired behavior.
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from __future__ import unicode_literals
from django.core.exceptions import MultipleObjectsReturned
from django.db import models
class Booking(models.Model):
class Meta:
managed = False
db_table = 'Booking'
unique_together = (('hotelno', 'guestno', 'datefrom'),)
hotelno = models.OneToOneField('Hotel', models.DO_NOTHING, db_column='hotelNo', primary_key=True) # Field name made lowercase.
guestno = models.IntegerField(db_column='guestNo') # Field name made lowercase.
datefrom = models.DateTimeField(db_column='dateFrom') # Field name made lowercase.
dateto = models.DateTimeField(db_column='dateTo', blank=True, null=True) # Field name made lowercase.
roomno = models.OneToOneField('Room', models.DO_NOTHING, db_column='roomNo') # Field name made lowercase.
list_display =
#def __str__(self):
# return ("".join(hotelno) + "".join(guestno) + "".join(datefrom))
class Guest(models.Model):
guestno = models.AutoField(db_column='guestNo', primary_key=True) # Field name made lowercase.
guestname = models.CharField(db_column='guestName', max_length=255) # Field name made lowercase.
guestaddress = models.CharField(db_column='guestAddress', max_length=255, blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'Guest'
class Hotel(models.Model):
hotelno = models.AutoField(db_column='hotelNo', primary_key=True) # Field name made lowercase.
hotelname = models.CharField(db_column='hotelName', max_length=255, blank=True, null=True) # Field name made lowercase.
city = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'Hotel'
class Room(models.Model):
roomno = models.IntegerField(db_column='roomNo', primary_key=True) # Field name made lowercase.
hotelno = models.ForeignKey(Hotel, models.DO_NOTHING, db_column='hotelNo') # Field name made lowercase.
type = models.CharField(max_length=255, blank=True, null=True)
price = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'Room'
unique_together = (('roomno', 'hotelno'),)
이 앱의 admin.py 파일에는 그와 같은 모델이 포함되어 있으므로 적어도 거기에있는 데이터를 볼 수 있습니다.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
# Register your models here.
from .models import Hotel, Room, Guest, Booking
admin.site.register(Hotel)
admin.site.register(Room)
admin.site.register(Guest)
admin.site.register(Booking)
내가 기본 장고 관리자 페이지에 액세스 할 때 내가 얻을 그들 중 하나를 클릭하면, 나는 tables registered on admin page. 내가 (다른 이유로) 이름없이 예약을 클릭하고 multiple records를 참조 볼 수 있지만거야 the MultipleObjectsReturned Error
내가 찾을 수있는 모든 것을 읽었으며 가장 가까운 것은 내가 왜 이런 일이 일어나고 있는지를 알 수있는 이유 중 일부는 모델의 복합 키와 관련이있다. 그러나 다시, 나는 그것이 실제 이유인지, 나는 또한 뭔가를 놓칠 수 있을지 모르겠다? 나는 모른다.
필요에 따라 데이터베이스를 확실히 변경할 수 있습니다. 나는 장고를 처음 사용하기 때문에 어떤 것이 효과가 있을지 확신 할 수 없었다. 이걸 시험해 볼게요. 그리고 제가 다시 연락 할게요. –