含代码
时间: 2023-07-02 20:17:26 浏览: 35
好的,下面我会给你提供一个基于Django框架的个人记账管理系统的示例代码,不过由于篇幅限制,我只能提供部分代码,希望对你有所帮助:
1. models.py
```python
from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
name = models.CharField(max_length=100)
class Record(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=10, decimal_places=2)
time = models.DateTimeField(auto_now_add=True)
@staticmethod
def get_total_amount(user_id):
return Record.objects.filter(user_id=user_id).aggregate(models.Sum('amount'))['amount__sum']
```
2. views.py
```python
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .models import Record, Category
@login_required
def index(request):
user_id = request.user.id
total_amount = Record.get_total_amount(user_id)
records = Record.objects.filter(user_id=user_id).order_by('-time')
categories = Category.objects.all()
return render(request, 'index.html', {
'total_amount': total_amount,
'records': records,
'categories': categories
})
@login_required
def add_record(request):
if request.method == 'POST':
category_id = request.POST['category']
amount = float(request.POST['amount'])
category = Category.objects.get(id=category_id)
record = Record(user=request.user, category=category, amount=amount)
record.save()
return redirect('index')
```
3. templates/index.html
```html
{% extends 'base.html' %}
{% block content %}
<h1>Welcome {{ request.user.username }}</h1>
<div>
<p>Total amount: {{ total_amount }}</p>
<p>
<a href="{% url 'add_record' %}">Add Record</a>
</p>
</div>
<div>
<table>
<thead>
<tr>
<th>Time</th>
<th>Category</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
{% for record in records %}
<tr>
<td>{{ record.time }}</td>
<td>{{ record.category.name }}</td>
<td>{{ record.amount }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div>
<form method="post" action="{% url 'add_record' %}">
{% csrf_token %}
<label for="category">Category:</label>
<select name="category" id="category">
{% for category in categories %}
<option value="{{ category.id }}">{{ category.name }}</option>
{% endfor %}
</select>
<br>
<label for="amount">Amount:</label>
<input type="number" name="amount" id="amount">
<br>
<button type="submit">Add</button>
</form>
</div>
{% endblock %}
```
以上是一个简单的个人记账管理系统的示例代码,如果你需要更多的代码或者有其他问题,可以随时与我交流。