python - Django:ModelForm注册覆盖prevoius对象
问题描述
我一直在尝试根据 Codecademy Django 路径中的项目制作自己的项目。以兽医办公室为例。我目前正在构建提供的基本代码,并添加了表单。我目前正在尝试使用 ModelForms 注册新所有者,然后在 vetoffice 显示所有注册所有者的列表。但是当我注册一个新的所有者时,以前的所有者似乎被覆盖了,并且只显示了新的所有者。
我对编写 Django 很陌生,所以我的代码并不完美。
车主型号:
class Owner(models.Model):
#The Owner table, with OwnerID as primary key
#Owner can own several pets
"""Create the Owner SQLite Table.
Primary Key: OwnerID, used as Foreign Key for paitient
Fields: first_name(String), last_name(string), phone(string(of numbers))
__str__ for easy coupling first and last name of owner.
Function: has_multiple_pets
reurns boolean True if owner have several pets registered with the Vet Office.
"""
ownerID = models.BigAutoField(primary_key=True)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
phone = models.CharField(max_length=30)
def __str__(self):
#Returns the first and last name of owner with whitespace between
return self.first_name + " " + self.last_name
def has_multiple_pets(self):
'''Do Owner have multiple pets.
Checks if a owner have multiple pets registered at the vet Vetoffice
and returns a boolean.
parameters: self
returns: boolean (True if owned pets are greater then 1)
'''
return self.patient_set.count() > 1
业主表格:
class OwnerForm(ModelForm):
class Meta:
model = Owner
fields = ['first_name', 'last_name', 'phone']
labels = {
'first_name' : 'First Name:',
'last_name' : 'Family name:',
'phone' : 'Phone'
}
楼主观点:
def owner(request):
owner_list = Owner.objects.order_by('last_name')
context = {'owner_list' : owner_list}
return render(request, 'vetoffice/owner.html', context)
def register_owner(request):
if request.method == "POST":
form = OwnerForm(request.POST)
if form.is_valid():
form.save()
return redirect('vetoffice:home')
else:
form = OwnerForm()
return render(request, 'vetoffice/register_owner.html', {'form' : form})
以及用于显示所有者列表的 HTML:
<ul>
{% for owner in owner_list %}
<li>
Name: {{ owner.last_name }}, {{ owner.first_name }} -- Phone: {{ owner.phone }}
</li>
{% endfor %}
</ul>
我希望注册所有者表单自动生成唯一的主键,但是当我尝试注册新所有者时,我得到:
NOT NULL 约束失败:vetoffice_owner.ownerID
请求方法:POST 请求 URL: http: //127.0.0.1 :8000/register/owner Django 版本:3.2.8 异常类型:IntegrityError 异常值:
NOT NULL 约束失败:vetoffice_owner.ownerID
解决方案
推荐阅读
- flutter - 如何根据孩子的大小制作小部件动画?
- powershell - 检查文件夹中是否存在文件?
- android - 单击时在片段中加载视图?
- javascript - 对于对象数组中特定日期之间数字的循环总和
- c++ - 如何设置向量的默认值
> 在升压程序选项中 - android - 使用背景颜色和文本在滑动时不显示矩形的回收站视图滑动
- python-3.x - 根据发生鼠标单击的位置显示一个点 tkinter
- android - 初始化接口数组时转换为 lambda
- angular - Angular Universal - 如何预加载?
- apache-kafka - KStream-KTable join,消息排序