Tôi có một dự án hiện có với các mô hình (Người dùng và Sách). Tôi muốn thêm một trường ManyToMany (M2M) vào các mẫu sách hiện có, nhưng lệnh syncbb không làm điều này.django thêm một trường/bảng ManyToMany vào lược đồ hiện có, lỗi liên quan đến số
Chi tiết: Sách đã có trường FK ánh xạ tới Người dùng và tôi muốn thêm trường M2M mới (trình đọc) cũng ánh xạ tới Người dùng. Như bạn đã biết, syncdb của Django chỉ quan tâm đến các bảng, vì vậy việc thêm một trường bình thường là dễ dàng, nhưng M2M yêu cầu một bảng nối mới (app_books_user), vì vậy không nên syncdb cmd thêm cái này giống như bất kỳ bảng mới nào khác? Nó đã tạo ra một bảng tham gia khác của tôi cho trường 'người bán' của Sách.
Khi tôi chạy syncdb, ban đầu tôi nhận được lỗi hướng dẫn tôi sử dụng đối số 'related_name' để giúp phân biệt hai tham chiếu đến Người dùng. Tôi đã thêm chúng. Tuy nhiên, khi tôi chạy lại syncdb, nó không tạo bảng nối mới (nhưng bây giờ nó không có lỗi). Trường mới tồn tại khi tôi xem nó thông qua Shell, nhưng không thể sử dụng nó b/c bảng kết nối không tồn tại. Tôi nhìn vào mã sql thông qua 'sqlall' cmd và nó in ra SQL cho bảng mới, nhưng nó không được thực thi.
Tôi đang thiếu gì? Tôi có nên ép buộc SQL (từ sqlall) thông qua trình duyệt cơ sở dữ liệu của tôi không? Liệu có bất kỳ hậu quả nào không? Mã sau:
Models.py
from django.contrib.auth.models import User
class Seller(models.Model):
...
class Books(models.Model):
name=models.CharField(max_length=50)
author=models.ForeignKey(User, related_name='creator')
readers=models.ManyToManyField(User, blank=True, related_name='viewers')
sellers=models.ManyToManyField(Seller)
Cảm ơn bạn
Tôi có thể giải quyết vấn đề này bằng cách mở rộng Người dùng bằng UserProfile và giữ 'người đọc' ở đó. – rich