Opened 10 years ago
Closed 10 years ago
#25023 closed Cleanup/optimization (invalid)
Many to Many through - save new Data
| Reported by: | trap12 | Owned by: | nobody |
|---|---|---|---|
| Component: | Forms | Version: | 1.8 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Hi,
I am new in Django and have problems with the M2M-Fields with a custom join table (through). I want to to save new Data (no duplicate). But the form shows me just the data in the db, which I can select.
I have no access to the through-table "RecipeIngredients" which links the ingredient with the recipe and holds the quantity.
I want to have a dynamic field, where I can add also new ingredient, which are not in the db. And I want to add the field quanity in the RecipeForm. (problem: the quantity field is not in the model Recipe, it is in the RecipeIngredients)
models.py:
class Ingredient(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200)
class Recipe(models.Model):
id = models.AutoField(primary_key=True)
recipename = models.CharField(max_length=200)
author = models.ForeignKey(Student, null=True)
pub_date = models.DateTimeField('date published', editable=False)
ingredients = models.ManyToManyField(Ingredient, through='Recipeingredients')
description = models.CharField(max_length=20000)
class Recipeingredients(models.Model):
id = models.AutoField(primary_key=True)
ingredient = models.ForeignKey(Ingredient)
recipe = models.ForeignKey(Recipe)
quantity = models.CharField(max_length=30)
forms.py:
class RecipeForm(forms.ModelForm):
class Meta:
model = Recipe
exclude = ('id', 'author', 'pub_date')
views.py:
@login_required
def create(request):
if request.method == 'POST':
form = RecipeForm(user=request.user, data=request.POST)
if form.is_valid():
recipe = form.save()
return HttpResponseRedirect(recipe.get_absolute_url())
else:
form = RecipeForm()
return render(request, 'recipes/create.html', {'form': form}}
create.html:
<form action="{{ action_url }}" method="post" accept-charset="utf-8">
{{ form.as_p }}
{% csrf_token %}
<p><input type="submit" value="Save"/></p>
</form>
Like I said, I have no textfield to add new ones.
Do you know what I have to change?
thanks in advance!!!
regards,
trap123
Change History (1)
comment:1 by , 10 years ago
| Resolution: | → invalid |
|---|---|
| Severity: | Release blocker → Normal |
| Status: | new → closed |
This is the django bug tracker. It's used for the development of django itself.
If you need help try #django on irc.freenode.net or the django users mailing list:
https://groups.google.com/forum/#!forum/django-users