我有一个类似的模型:
class Product(models.Model):
third_party_id = models.CharField(max_length=64, blank=False, unique=True)
Run Code Online (Sandbox Code Playgroud)
使用Django默认主键.我希望用户能够通过在添加页面上设置third_party_id来添加产品,但我不希望编辑页面中的该字段可编辑以避免损坏third_party_id.在Django文档中,相同的设置似乎用于添加和编辑.这可能吗?
在Django管理员中,我想覆盖并实现我自己的模型形式(例如Invoice模型).
我希望发票表单有自动填写客户名称,产品名称的字段,我也想进行自定义验证(例如客户的信用额度).如何覆盖Django管理员提供的默认表单并实现我自己的?
我是Django的新手,我很欣赏任何指针.
假设我有我的披萨应用程序与Topping和Pizza课程,他们在Django Admin中显示如下:
PizzaApp
-
Toppings >>>>>>>>>> Add / Change
Pizzas >>>>>>>>>> Add / Change
Run Code Online (Sandbox Code Playgroud)
但我希望他们这样:
PizzaApp
-
Pizzas >>>>>>>>>> Add / Change
Toppings >>>>>>>>>> Add / Change
Run Code Online (Sandbox Code Playgroud)
如何在我的admin.py中配置它?
我有一个与另一个对象有多对多关系的对象.
在Django Admin中,这会在多个选择框中生成一个很长的列表.
我想过滤ManyToMany关系,因此我只获取客户选择的City中可用的类别.
这可能吗?我是否必须为它创建一个小部件?如果是这样 - 我如何将行为从标准的ManyToMany字段复制到它,因为我也想要filter_horizontal函数.
这些是我的简化模型:
class City(models.Model):
name = models.CharField(max_length=200)
class Category(models.Model):
name = models.CharField(max_length=200)
available_in = models.ManyToManyField(City)
class Customer(models.Model):
name = models.CharField(max_length=200)
city = models.ForeignKey(City)
categories = models.ManyToManyField(Category)
Run Code Online (Sandbox Code Playgroud) 我的网站使用Django的用户身份验证用户模型和自定义UserProfile模型来存储一些额外的数据(生日等).有没有办法在Django管理员中创建一个视图,将来自User和UserProfile模型的字段编织在一起?
我怀疑这个代码片段甚至不是很接近,但它可能有助于说明我正在尝试做什么:
from django.contrib import admin
from django.contrib.auth.models import User
from userprofile.models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
list_display = ('name', 'gender', 'User.email') #user.email creates the error - tried some variations here, but no luck.
admin.site.register(UserProfile, UserProfileAdmin)
Run Code Online (Sandbox Code Playgroud)
错误信息:
NotperlyConfigured:UserProfileAdmin.list_display [2],'User.email'不是'UserProfileAdmin'的可调用或属性,或者在模型'UserProfile'中找到.
最终,我正在尝试创建一个管理视图,其中包含来自UserProfile的姓名和来自User的电子邮件.
我有一个非常简单的Django应用程序,以记录给我的同事的讲座.由于它是相当基本的,我使用Django管理员本身.这是我的models.py:
#models.py
from django.db import models
class Lecture(models.Model):
topic = models.CharField(max_length=100)
speaker = models.CharField(max_length=100)
start_date = models.DateField()
end_date = models.DateField()
Run Code Online (Sandbox Code Playgroud)
我需要确保没有人在管理表单中的结束日期之后输入开始日期,所以我在管理员中阅读了django文档以进行自定义验证,并在我的admin.py中实现了以下内容:
#admin.py
from models import Lecture
from django.contrib import admin
from django import forms
class LectureForm(forms.ModelForm):
class Meta:
model = Lecture
def clean(self):
start_date = self.cleaned_data.get('start_date')
end_date = self.cleaned_data.get('end_date')
if start_date > end_date:
raise forms.ValidationError("Dates are incorrect")
return self.cleaned_data
class LectureAdmin(admin.ModelAdmin):
form = LectureForm
list_display = ('topic', 'speaker', 'start_date', 'end_date')
admin.site.register(Lecture, LectureAdmin)
Run Code Online (Sandbox Code Playgroud)
但是,这对我的管理员没有任何影响,我可以保存讲座,其中start_date位于end_date之后,如图所示:
我究竟做错了什么 ??
每次我使用django-admin命令 - 即使在TAB完成时 - 它会抛出一个RemovedInDjango19Warning(如果我使用test命令,则会抛出更多).我怎样才能压制这些警告?
我正在使用Django 1.8和Python 3.4(在虚拟环境中).据我所知,所有这些警告来自库而不是我的代码.
这里有些例子:
…/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes.
return f(*args, **kwds)
…/lib/python3.4/site-packages/django/contrib/admin/util.py:7: RemovedInDjango19Warning: The django.contrib.admin.util module has been renamed. Use django.contrib.admin.utils instead.
"Use django.contrib.admin.utils instead.", RemovedInDjango19Warning)
…/lib/python3.4/site-packages/django/templatetags/future.py:25: RemovedInDjango19Warning: Loading the ``url`` tag from the ``future`` library is deprecated and will be removed in Django 1.9. Use …
今天我已将 Django 更新到最新版本 3.1。
但是由于某种原因,当登录到管理页面时,我只能看到一个看起来很奇怪的管理页面。
管理文件
有人可以帮助我出了什么问题,或者我需要修改哪些内容才能返回原始管理页面。
提前致谢
我认为无论出于何种原因这很容易做到,但我看得更深,似乎没有直接的方法允许用户在实例的"更改"视图上执行自定义管理操作(即,当您只是查看编辑时屏幕显示单个实例,而不是实例列表).
我忽略了一个简单的方法吗?或者是我唯一的选择来覆盖其中一个管理模板(可能还有ModelAdmin.add_view方法)?
django管理视图中是否有选项可用于外键字段的排序?即我有一个"学校"模型的外键,它显示为下拉列表,按照pk排序 - 我希望它按字母顺序排序.
django ×10
django-admin ×10
python ×4
django-forms ×2
django-3.1 ×1
django-views ×1
many-to-many ×1