foreign key as initial value not passed to the ModelForm in django

Karabas Barabas

I need to pass the value (based on category_id) for a ForeignKey to the ModelForm but it's not working. My field remains "--------" and proper value is not set from the drop-down field. Value for the Category must BE SELECTED and other values must be not hided from user to choice.

As the result category value successfuly passed to template but drop-down field Category not set!

As I can see other guys solved it via constructor for ModelForm, but I feel there must be native django solution.

Would be thankful for any solutions!

my models.py:

class Category(models.Model):
    name = models.CharField('Name', max_length=20)
    icon = models.CharField('Icon', blank=True, max_length=20)

class Transaction(models.Model):
    type = models.CharField('Type', default='exp', max_length=20)
    category = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
    note = models.CharField('Note', blank=True, max_length=20)

my urls.py:

urlpatterns = [
url(r'^add/(?P<category_id>[0-9]+)', "core.views.add_trans_view", name='add_trans_url'),
]

my views.py:

def add_trans_view(request, category_id):
    category = Category.objects.get(id=category_id)
    form = TransactionForm(request.POST or None, initial={'category':category.name,})
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        return render(request,
            'core/transaction_form.html', {'form': form, 'for_debug':category})

my forms.py:

class TransactionForm(forms.ModelForm):
class Meta:
    model = Transaction
    fields = ['type', 'category', 'note']

my template:

<p>Initial 'category' value transfered from view:</p>
<h4>{{for_debug}}</h4>
<form method='POST' action=''> {% csrf_token %}
  {{form.as_p}}
  <input type='submit' value='Done'/>    
</form>
LostMyGlasses

Try replacing

form = TransactionForm(request.POST or None, initial={'category':category.name,})

with

form = TransactionForm(request.POST or None, initial={'category':category,})

initial needs the instance (category), instead of only the string that contains its name (category.name).

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Displaying foreign key attributes in ModelForm Django

From Dev

Django ModelForm - Create instance with foreign key

From Dev

Displaying foreign key attributes in ModelForm Django

From Dev

django ModelForm DateField initial value not working

From Dev

Modelform prepopulate foreign key

From Dev

Django: Set initial Value with a Passed Variable

From Dev

How to Stop Django ModelForm From Creating Choices for a Foreign Key

From Dev

How to make a modelform editable foreign key field in a django template?

From Dev

Validate multiple related objects through foreign key field in Django ModelForm

From Dev

Django - UpdateView ModelForm setting initial value on queryset field

From Dev

Django. Default value from foreign key

From Dev

Display foreign key value in django template

From Dev

Get foreign key value for queried object in Django

From Dev

Django admin foreign key dropdown with custom value

From Dev

keeping django models clean method validating foreign key object and using ModelForm save

From Dev

Django: Initial modelform fields with the same name

From Dev

Django 1.8 app mysteriously fails with initial migration due to errno: 150 "Foreign key constraint is incorrectly formed"

From Dev

Django :: Reference foreign key

From Dev

Django generic foreign key

From Dev

Django - Foreign Key default

From Dev

Django queryset foreign key

From Dev

Django and foreign key

From Dev

Django Filter by Foreign Key

From Dev

Django Foreign Key Relations

From Dev

Django if statement with foreign key

From Dev

Django queryset foreign key

From Dev

Django Foreign key on self

From Dev

Django and foreign key

From Dev

Django Foreign Key and Forms

Related Related

HotTag

Archive