Làm cách nào tôi có thể đặt giá trị ban đầu của trường trong biểu mẫu được tạo tự động để thêm thể hiện mô hình Django, trước khi biểu mẫu được hiển thị? Tôi đang sử dụng Django 1.3.1.Làm thế nào để thiết lập dữ liệu ban đầu cho mô hình quản trị Django thêm mẫu thể hiện?
mô hình của tôi là như sau:
class Foo(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
và hình thức quản trị hiện tại thực sự là không có gì đặc biệt
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
Khi tôi sử dụng trang quản trị để thêm một trường hợp mới của Foo, tôi nhận được một hình thức tốt đẹp với các trường trống cho tiêu đề và mô tả. Những gì tôi muốn là trường mô tả được thiết lập với một mẫu mà tôi có được bằng cách gọi một hàm.
nỗ lực tốt nhất hiện tại của tôi lúc nhận được ở đó là thế này:
def get_default_content():
return 'this is a template for a Foo description'
class FooAdminForm(django.forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwargs):
kwargs['initial'].update({'description': get_default_content()})
super(FooAdminForm, self).__init__(self, *args, **kwargs)
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
form = FooAdminForm
nhưng nếu tôi cố gắng này, tôi nhận được lỗi Django này:
AttributeError at /admin/bar/foo/add/
'FooForm' object has no attribute 'get'
Request Method: GET
Request URL: http://localhost:8000/admin/bar/foo/add/
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value: 'FooForm' object has no attribute 'get'
Exception Location: /www/django-site/venv/lib/python2.6/site-packages/django/forms/widgets.py in value_from_datadict, line 178
Tôi không biết những gì là sai ở đây, và những gì tôi nên làm để làm cho nó hoạt động. Những gì tôi cũng thấy lạ về lỗi này (ngoài thực tế là tôi thấy nó ở tất cả) là không có FooForm trong mã của tôi ở tất cả?
Wow, mà làm việc như một nét duyên dáng! Thông điệp khó hiểu khủng khiếp bằng cách cho một sai lầm ngớ ngẩn như vậy ... Cảm ơn rất nhiều sự giúp đỡ của bạn! –
Nhân tiện, tôi cũng đã thử đề xuất thứ hai của bạn thành công, thậm chí còn sạch hơn, vì vậy cảm ơn bạn một lần nữa! –
Tôi thấy rằng cài đặt kwargs ['initial'] gây ra lỗi khi lưu biểu mẫu. Tôi đã đặt một mệnh đề if: nếu 'ban đầu' bằng kwargs.keys(): kwargs ['initial']. ( Điều này làm việc để hiển thị giá trị ban đầu và cập nhật chúng. – Sven