Q:

Newly added database entry is not visible from other model

I'm playing around with django framework and trying to create some expense tracking application as an exercise.
I got two models: Category and Expense:
class Category(models.Model):
    name = models.CharField(max_length=50)

class Expense(models.Model):
    categories_list = Category.objects.order_by('name')
    categories_tuples = ((x.name, x.name) for x in categories_list)

    category = models.CharField(max_length=50, choices=categories_tuples)
    add_date = models.DateField()
    amount = models.DecimalField(max_digits=10, decimal_places=2)

I also got two forms for adding new Categories and new Expenses:
class ExpenseForm(ModelForm):
    class Meta:
        model = Expense
        fields = ['category', 'add_date', 'amount']

class CategoryForm(ModelForm):
    class Meta:
        model = Category
        fields = ['name']

I use these forms in separate views:
def new_expense(request):
    if request.method == "POST":
        form = ExpenseForm(request.POST)
        if form.is_valid():
            expense = form.save(commit=False)
            expense.save()
            return redirect('index')
    else:
        form = ExpenseForm()
        return render(request, 'expenses/new_expense.html', {'form': form})

def new_category(request):
    if request.method == "POST":
        form = CategoryForm(request.POST)
        if form.is_valid():
            expense = form.save(commit=False)
            expense.save()
            return redirect('index')
    else:
        form = CategoryForm()
        return render(request, 'expenses/new_category.html', {'form': form})

So, the desired behaviour is that I can add new Category with assigned name and after that it should be possible to add new Expense using data from new Category database entry.
The problem is that after adding new Category in new_category view and switching to new_expense view, newly added Category name is not displayed in drop down list in the Expense category field.
However after turning server down and bringing it up again recently added Category becomes available in the mentioned drop down list.
May I kindly ask you to help me figuring where the problem is?

A:

ForeignKey is represented by django.forms.ModelChoiceField, which is a ChoiceField whose choices are a model QuerySet. Excerpt from documentation. 
Your Expense Model could be like this:
class Expense(models.Model):
    category = models.ForeignKey(Category)
    add_date = models.DateField()
    amount = models.DecimalField(max_digits=10, decimal_places=2)

