Tôi đang cố gắng sử dụng AbstractUser để thêm một trường vào mô hình Người dùng chuẩn của Django. Đây là mã của tôi:Lỗi cơ sở dữ liệu: không có bảng như vậy: auth_user. Mở rộng AbstractUser và sử dụng mô hình để đăng ký trên admin
class GUser(AbstractUser):
uuid = UUIDField(auto=True)
này đã thành công vì từ vỏ tôi có thể nói,
>>> a = GUser.objects.all()
>>> a
[<GUser: User1>]
>>> a[0].uuid
UUID('7d1f0b7b52144a2ea20db81ce74741e3')
Vấn đề tôi đang gặp là đăng ký một người dùng mới từ/admin. Khi tôi tạo một người dùng mới, tôi nhận được một lỗi cơ sở dữ liệu:
no such table: auth_user
Trước khi tôi nhận được nhiều hơn vào nó, đây là forms.py tôi:
class GUserChangeForm(UserChangeForm):
class Meta:
model = get_user_model()
class GUserCreationForm(UserCreationForm):
class Meta:
model = get_user_model()
def clean_username(self):
username = self.cleaned_data["username"]
try:
get_user_model().objects.get(username=username)
except get_user_model().DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate'])
Và admin.py tôi:
class GUserAdmin(UserAdmin):
form = GUserChangeForm
add_form = GUserCreationForm
fieldsets = (
(None, {'fields': [('username', 'password')]}),
('Personal info', {'fields': ('is_active','is_staff','is_superuser','groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
#('Universal ID', {'fields': ('uuid')})
)
admin.site.register(GUser,GUserAdmin)
Tôi đọc rằng khi điều này xảy ra với những người khác mà họ đã triển khai Biểu mẫu của riêng họ (như tôi đã làm) để ghi đè clean_username (tự):
Tuy nhiên tôi không nghĩ rằng đây là nhận được gọi là khi tôi cố gắng để thêm một người dùng từ admin. Tệp auth.forms.py đang được gọi ngay cả khi tôi đăng ký GUserAdmin của mình.
Ngoài ra, khi tôi xóa cơ sở dữ liệu của mình (sqlite3) và sau đó gọi python manage.py syncdb, tôi thấy rằng bảng auth_user thực sự không được tạo.
Có, tôi đã bao gồm AUTH_USER_MODEL trong settings.py.
Mọi trợ giúp sẽ được đánh giá cao.
Tôi đã đọc: https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#custom-users-and-the-built-in-auth-forms
Cùng với tấn SO bài viết nhưng không ai trong số họ dường như khắc phục vấn đề tôi gặp phải.
Dường như chuỗi này có câu trả lời của bạn: https://groups.google.com/forum/#! topic/django-users/kovey9zYn5c Dường như, Custom Model không tôn trọng 'Meta' cho người quản lý – karthikr
@karthikr Tôi đã xem trang đó nhưng không chắc liệu chúng tôi có gặp vấn đề chính xác không. Là giải pháp để thực sự thay đổi mã trong auth.forms.py? – FrancescoA
Tôi nghĩ rằng đó là câu trả lời của Scott Anderson vào ngày 20 tháng 3 – karthikr