- У меня есть модель клиента и группы.
- Клиент может быть частью нескольких групп.
- Клиенты, входящие в группу, могут использовать групповую бесплатную арендную плату в любое время, но только один раз. Вот где промежуточная модель (ClientGroupe) поставляется с этими дополнительными данными.
На данный момент, когда я пытаюсь сохранить данные m2m, он просто умирает и говорит, что я должен использовать ClientGroupe Manager... так что пропало?
Вот мои модели:
class Groupe(models.Model):
nom = models.CharField(max_length=1500, blank=True)
class Client(models.Model):
nom = models.CharField(max_length=450, blank=True)
prenom = models.CharField(max_length=450, blank=True)
groupes = models.ManyToManyField(Groupe, null = True, blank = True, through='ClientGroupe')
class ClientGroupe(models.Model):
client = models.ForeignKey(Client)
groupe = models.ForeignKey(Groupe)
dt = models.DateField(null=True, blank=True) # the date the client is using its group free rental rate
class Meta:
db_table = u'clients_groupes'
и здесь мой взгляд:
def modifier(request, id):
client = Client.objects.get(id=id)
form = ClientForm(instance = client)
dict = {
"form": form
, "instance" : client
}
if request.method == "POST":
form = ClientForm(request.POST, instance = client)
if form.is_valid():
client_mod = form.save()
id = client_mod.id
return HttpResponseRedirect(
"/client/%(id)s/?err=success" % {"id" : id}
)
else:
return HttpResponseRedirect(
"/client/%(id)s/?err=warning" % {"id" : id}
)
return render_to_response(
"client/modifier.html"
, dict
, context_instance=RequestContext(request)
)
ИЗМЕНИТЬ
и здесь код ClientForm:
class ClientForm(ModelForm):
class Meta:
model = Client
РЕДАКТИРОВАТЬ № 2: здесь сообщение об ошибке:
AttributeError at /client/445/
Cannot set values on a ManyToManyField which specifies an intermediary model. Use ClientGroupe Manager instead.
Request Method: POST
Request URL: http://localhost/client/445/
Exception Type: AttributeError
Exception Value: Cannot set values on a ManyToManyField which specifies an intermediary model. Use ClientGroupe Manager instead.
Exception Location: C:\Python25\lib\site-packages\django\db\models\fields\related.py in __set__, line 574
Python Executable: C:\xampp\apache\bin\apache.exe
Python Version: 2.5.2